|
Desarrollo conjunto de 3ºaño C.B.-5ºaño ElectrónicaDocentes a cargo: 3ºaño- Marcelo Cañari; 5ºaño- Roberto BorraDESCRIPCION - TRANSMISOR - RECEPTOR - Prog.Asm - Prog.V.B. Descripción:Este conjunto de dispositivos permite la transmisión de mensajes escritos, desde una PC. hasta un pequeño receptor, valiéndose para el enlace de RF., medio de vinculación utilizado, de un par de híbridos, los denominados Virtual Wire, transfiriendo directamente los datos presentes en el puerto serie asincronico con protocolo RS232 que cuentan todas las PC. hasta el receptor donde son interpretados directamente por un microcontrolador, que no cuentan con UART incorporada en su hard si no que se la implemento en soft,y los visualiza mediante un display LCD del tipo inteligente de 2 líneas por 20 caracteres emitiendo una señal sonora con cada nuevo mensaje. La interface hombre-maquina que se implemento para la PC es del tipo gráfica, realizada en Visual Basic. El Transmisor:Esta desarrollado alrededor de un híbrido con oscilador controlado por resonador SAW, que en nuestro caso, fija su frecuencia de trabajo en 433.92Mhz.y un consumo máximo de 9mA para tensiones de 1.5V. a 12V. Esto permite tomar alimentación del mismo puerto serie de la PC al que se conecta, posibilitando además encapsularlo dentro de las tapas de el conector DB25 junto a los componentes necesarios para completar la fuente de alimentacion formada por un diodo, un capacitor electrolitico (que sirve como tapon del orificio destinado al cable) y un pull-down en la entrada de datos, necesario porque la salida RS232 alterna entre +12V -12V bloqueado este ultimo por un diodo, para adaptarlo a la entrada del transmisor; y sirve, a la vez, de indicador luminoso de transmisión;formando un modulo robusto y compacto (ver detalle foto 1), del que solo se prolonga la antena (un conductor de 18 cm. de longitud). PARA VER EL CIRCUITO HACER CLIC AQUI Puede verse el modelo terminado y su interior
El Receptor:Este modulo consta de tres componentes claves. En primer lugar el encargado de recibir la señal de RF.; un hibrido pareja del transmisor antes referido que cuenta con dos salidas, una analogica y otra digital; la primera usada en este caso solo para monitorear mediante un osciloscopio el ajuste de la banda, lo que se logra variando la posicion del nucleo de su pequeña bobina hasta conseguir la mayor amplitud en la señal aqui presente. En segundo lugar, el corazon de este desarrollo, un microcontrolador PIC16C84 o 16F84. A este ingresa por su pin de interrupcion externa, la señal disponible en la salida digital del hibrido receptor la cual es procesada para decodificar su informacion. Por ultimo un display de LCD, los llamados inteligentes, es encargado de mostrar el mensaje.Ademas incorpora un buzer piezoelectrico, que puede, por su bajo consumo, conectarse directamente a la salida del PIC e indicar en forma sonora la recepcion de un nuevo mensaje. PARA VER EL CIRCUITO HACER CLIC AQUI PROGRAMA EN LENGUAJE ENSAMBLADOR; CLOCK = 4 Mhz. ; BAUDIOS =1200 ; BITS =8 ; PARIDAD =N ; STOP =1 ; CICLOS POR BIT =833 PRESACLER =4 RTCC =208 ; OFFSET DE INT 16 CICLOS ; CICLOS START_BIT =1250 PRESCALER =8 RTCC =156 ; OFFSET DE INT 32 CICLOS LIST P=16C84 INCLUDE P16F84.INC ;================================================================= ; ;================================================================= REG_W EQU 0CH ;AUX PARA GUARDAR W REG_STATUS EQU 0DH ;AUX PARA GUARDAR STATUS PUNT_M EQU 0EH ;PUNTERO PARA MOSTRAR MENSAJE PUNT_R EQU 0FH ;PUNTERO PARA ALMACENAR MENSAJE LONG_MENS EQU 10H ;LONGITUD DEL MENSAJE STATUS_MENS EQU 11H ;STATUS DEL MENSAJE TIEMPO EQU 12H ;TIEMPO DE RETARDO PARA EL DISPLAY POSICION EQU 13H ;POSICION DEL CURSOR EN EL DISPLAY CONT_BIT EQU 14H ;CONTADOR DE BITS RECIBIDOS RX_REG EQU 15H ;REGISTRO DE RECEPCION RX_TEMP EQU 16H ;GUARDA TEMPORALMENTE BIT RECIBIDO CONT_BYTE EQU 17h ;CUENTA LOS BYTE RECIBIDOS PUNT_TEM EQU 18H ;GUARDA EL COMIENZO DEL PUNTERO PRINCIPIO EQU 19H ;COMIENZO DEL BUFFER FIN EQU 4FH ;ULTIMA POSICION DE MEMORIA DEL 84 _OPTION EQU 81H RTCC EQU 01H ;================================================================= ; STATUS_MENS ;================================================================= #DEFINE MOSTRANDO STATUS_MENS,0 #DEFINE RECIV_BYTE STATUS_MENS,1 #DEFINE RECIV_OTRO STATUS_MENS,2 #DEFINE MENS_RECIV STATUS_MENS,3 ;#DEFINE STATUS_MENS,4 ;#DEFINE STATUS_MENS,5 #DEFINE XON_DETEC STATUS_MENS,6 #DEFINE ERROR_FRAME STATUS_MENS,7 ;================================================================= ;================================================================= #DEFINE _C STATUS,C #DEFINE _Z STATUS,Z #DEFINE _T0IF INTCON,T0IF #DEFINE _T0IE INTCON,T0IE #DEFINE _GIE INTCON,GIE #DEFINE RS PORTA,0 ;STATUS DE DISPLAY(DATO-CONTROL) #DEFINE E PORTA,1 ;ENABLE DE DISPLAY #DEFINE RX PORTA,4 #DEFINE _RX RX_TEMP,4 #DEFINE PAG0 BCF STATUS,5 #DEFINE PAG1 BSF STATUS,5 ;================================================================= ; MACROS ;================================================================= PUSH MACRO MOVWF REG_W SWAPF STATUS,W PAG0 MOVWF REG_STATUS ENDM ;================================================================= POP MACRO SWAPF REG_STATUS,W MOVWF STATUS SWAPF REG_W SWAPF REG_W,W ENDM ;================================================================= ; VECTOR RESET ;================================================================= ORG 0H GOTO INICIO ;================================================================= ; VECTOR INTERRUPCION ;================================================================= ORG 04H BTFSS _T0IF ;INTERRUPCION DEL RTCC ? RETFIE ;NO! VOLVER Y GIE PUSH ;SI! GUARDAR REGISTROS BTFSC RECIV_BYTE ;EN PROGRESO RECEP.DE BYTE GOTO RECIV_BIT ;SI! SEGUIR RECIBIENDO GOTO START_BIT ;NO! DETECTO UN START BIT? RESTAURA_REG POP ;RECUPERAR REGISTROS BCF _T0IF RETFIE ;================================================================= ; PRINCIPAL ;================================================================= INICIO PAG1 CLRF TRISB ;PORTB COMO SALIDA MOVLW B'10000' MOVWF TRISA ;RX RA4 COMO ENTRADA PAG0 BCF _T0IF ;LIMPIAR FLAG INT. TIMER0 BSF _T0IE ;HABILITAR INT. TIMER0 BSF _GIE ;HABILITAR INT. GLOBALES CLRF STATUS_MENS ;INICIALIZA EL STATUS_MENS MOVLW PRINCIPIO ;INICIALIZA LOS PUNTEROS MOVWF PUNT_R MOVWF PUNT_M MOVWF PUNT_TEM ;================================================================= ; SET_DISPLAY ;================================================================= MOVLW 38H ;DOS LINEAS 8 BITS CALL CONTROL MOVLW 06H ;SIN DESPLAZAR CALL CONTROL MOVLW 0CH ;ACTIVA DISPLAY CALL CONTROL MOVLW 'H' CALL DATO ;================================================================= ; LOOP ;================================================================= ESPERA_MENS CALL NUEVO_BYTE ESPERA BTFSS RECIV_OTRO GOTO ANALIZA_MENS BTFSC MENS_RECIV CALL MUESTRA GOTO ESPERA ANALIZA_MENS BTFSC ERROR_FRAME GOTO MENS_NO_VALIDO BTFSC XON_DETEC GOTO GUARDAR MOVLW .17 XORWF RX_REG,W BTFSS _Z GOTO ESPERA_MENS BSF XON_DETEC GOTO ESPERA_MENS GUARDAR MOVLW .13 XORWF RX_REG,W BTFSC _Z GOTO FIN_MENS INCF CONT_BYTE MOVF PUNT_R,W MOVWF FSR MOVF RX_REG,W MOVWF INDF INCF PUNT_R MOVLW (FIN + 1) XORWF PUNT_R,W BTFSS _Z GOTO ESPERA_MENS MOVLW PRINCIPIO MOVWF PUNT_R GOTO ESPERA_MENS FIN_MENS MOVF CONT_BYTE,W MOVWF LONG_MENS CLRF CONT_BYTE BSF MENS_RECIV MOVF PUNT_R,W MOVWF PUNT_TEM BCF XON_DETEC GOTO ESPERA_MENS MENS_NO_VALIDO MOVF PUNT_TEM,W MOVWF PUNT_R CLRF CONT_BYTE BCF XON_DETEC GOTO ESPERA_MENS ;=============================================================== NUEVO_BYTE BSF RECIV_OTRO MOVLW 9 MOVWF CONT_BIT ;INICIALIZA EL CLRF RX_REG ;CONTADOR DE BITS BCF ERROR_FRAME PAG1 MOVLW B'00111000' ;INCREMENTA EL RTCC CON MOVWF _OPTION ;EL START BIT PAG0 MOVLW 0FFH ;CARGAR RTCC CON 255 MOVWF RTCC ;PARA QUE LO DISPARE EL RETURN ;FLANCO DEL START BIT ;=============================================================== START_BIT PAG0 BTFSC RX GOTO FALSO_START_BIT BSF RECIV_BYTE PAG1 MOVLW 02H MOVWF _OPTION PAG0 MOVLW -.152 MOVWF RTCC GOTO RESTAURA_REG FALSO_START_BIT MOVLW 0FFH MOVWF RTCC GOTO RESTAURA_REG RECIV_BIT PAG1 MOVLW 01H MOVWF _OPTION PAG0 MOVF PORTA,W MOVWF RX_TEMP MOVLW -.204 MOVWF RTCC MOVF PORTA,W XORWF RX_TEMP,W ANDLW B'10000' BTFSC _Z GOTO TOMAR MOVF PORTA,W MOVWF RX_TEMP TOMAR DECFSZ CONT_BIT GOTO RECIV_PROXIMO RECIV_STOP_BIT BTFSS _RX BSF ERROR_FRAME BCF RECIV_BYTE BCF RECIV_OTRO GOTO RESTAURA_REG RECIV_PROXIMO BCF _C BTFSC _RX BSF _C RRF RX_REG GOTO RESTAURA_REG ;=============================================================== ; RUTINA DE DISPLAY ;=============================================================== RETARDO MOVLW 0H MOVWF TIEMPO DECRE DECFSZ TIEMPO GOTO DECRE RETURN CONTROL BCF RS GOTO PASO2 DATO BSF RS PASO2 BSF E MOVWF PORTB CALL RETARDO BCF E CALL RETARDO RETURN ;=============================================================== ; MOSTRAR MENSAJE ;=============================================================== MUESTRA BTFSC MOSTRANDO GOTO CICLO BSF MOSTRANDO MOVLW 01H CALL CONTROL ;LIMPIAR DISPLAY Y HOME CICLO MOVF PUNT_M,W MOVWF FSR MOVF INDF,W CALL DATO INCF PUNT_M MOVLW (FIN + 1) XORWF PUNT_M,W BTFSS _Z GOTO FALTA MOVLW PRINCIPIO MOVWF PUNT_R FALTA MOVLW 10H ;SI COMPLETO LA XORWF POSICION,W ;PRIMER LINEA BTFSS _Z ;PASAR A LA SEGUNDA GOTO FINAL ;FIN DE MENSAJE ? MOVLW 0C0H ;DDRAM 1ºCARACTER 2ºLINEA CALL CONTROL FINAL INCF POSICION DECFSZ LONG_MENS ;FIN DE MENSAJE ? RETURN ;NO BCF MOSTRANDO ;SI BCF MENS_RECIV RETURN ;================================================================= ;================================================================= END Podes bajar aqui el ejecutable Pager.exe, es una version para 32 bits (WINDOWS 95 o 98); el cual se detalla a continuacion
|
No dudes en comunicarte ante cualquier duda o
inquietud Ultima actualizacion de este sitio 25/04/99 |